package xian.woniuxy.a_shiro;

import org.apache.shiro.SecurityUtils;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.mgt.DefaultSecurityManager;
import org.apache.shiro.realm.Realm;
import org.apache.shiro.realm.text.IniRealm;
import org.apache.shiro.subject.Subject;


public class App {
    public static void main(String[] args) {
        // 创建一个安全管理器
        DefaultSecurityManager SecurityManager=new DefaultSecurityManager();
        // ===========================================================================
        // 加载配置文件，把配置文件中的信息加载到 IniRealm 对象中
        // 也就是说，把硬盘上的信息，加载到内存中了
        Realm realm=new IniRealm("src/main/java/xian/woniuxy/a_shiro/shiro.ini");
        // ============================================================================

        // 安全管理器就是shiro中的“大总管”，就是什么都管理
        // 把读取到的配置信息，设置到 securityManager 中
        SecurityManager.setRealm(realm);
        // 还要把 securityManager 设置为全局的(将来在web环境中，这一行代码不用写)
        SecurityUtils.setSecurityManager(SecurityManager);
        // 获取要认证的主体，就是当前要登录系统的那个东东
        // 在shiro中，就是用Subject对象，代表要登录系统的实体（可能是个人，也可能是个程序）
        Subject subject=SecurityUtils.getSubject();

        // 获取主体提交来的账户密码（大部分是从表单提交来的），以下的username和password你就假设是从前端获取到的
        // request.getParameter("username");
        String username = "bar";
        String password = "456";
        // 拿着客户传来的账户密码，封装成shiro中的一个令牌

        UsernamePasswordToken token=new UsernamePasswordToken(username,password);
        try {
            subject.login(token);
            System.out.println("认证通过");
        }catch (Exception e){
            System.out.println("认证失败");
            e.getMessage();
        }



    }
}
